home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / EDITOR / AMAC44.ARJ / FIL002.QM < prev    next >
Text File  |  1992-05-27  |  23KB  |  543 lines

  1. *                               fil002.qm
  2. *           Macros To Mark or Remove Duplicate Lines In Files
  3. *                        Written By Tom Hogshead
  4. *                       [ See FILExx.QM For Use ]
  5. *                                 5/30/92
  6. *   Key                         Description              Bytes  Secs Speed
  7. *  ─────     ───────────────────────────────────────     ─────  ──────────
  8. *   @5   -   Remove Duplicate Lines,  ( )                 145    5.6   a
  9. *            Duplicated Lines Retained In Nul File
  10. *
  11. *   @7   -   Retain Only Non-Duplicated Lines and          90    7.7   b
  12. *            Remove All Duplicated Lines
  13. *
  14. *   @8   -   Retain Only Non-Duplicated Lines and         162    8.3   b
  15. *            Remove All Duplicated Lines,
  16. *            Duplicated Lines Retained In Nul File
  17. *
  18. *   @f8  -   Retain Only Non-Duplicated Lines and         141    9.0   b
  19. *            Remove All Duplicated Lines,
  20. *            Duplicated Lines Retained In Nul File,
  21. *            Modification of @8 Using Scratch Buffers
  22. *
  23. *   @9   -   Mark Duplicated Lines                        104   14.2   c
  24. *
  25. *   @0   -   Mark Non-Duplicated Lines                    141   15.9   d
  26. *
  27. *------
  28. *  In a 200 hundred line file on a 12 mhz AT, times in seconds to:
  29. *        a - Remove  90     duplicate  lines
  30. *        b - Remove 180     duplicated lines
  31. *        c - Mark   180     duplicated lines
  32. *        d - Mark    20 non-duplicated lines
  33. *
  34. *     {e:\up\FILE*}   Return To FILExx.QM
  35. *
  36. *--eoi
  37.  
  38.  
  39. * DESCRIPTION
  40. * ------------
  41. * The following set of macros remove and/or mark non-empty duplicate
  42. * and duplicated lines in the current file.  These macros are in
  43. * Amac43.zip fil002.qm.  Following describes the macros' functions.
  44.  
  45. * The following four macros remove duplicate or duplicated lines from
  46. * the current file:
  47.  
  48. *     @5  -   Removes all non-empty duplicate lines from the current
  49. *             file being edited, leaving only the first line of any
  50. *             duplicate lines.  All removed duplicate lines are shown
  51. *             as a block in the Nul file.
  52.  
  53. *     @7  -   Retains only all non-empty non-duplicated lines in the
  54. *             current file and remove all lines that are duplicated.
  55. *             Duplicated lines are Not retained in the Nul file for
  56. *             viewing.
  57.  
  58. *     @8  -   Retains only all non-empty non-duplicated lines in the
  59. *             current file and remove all lines that are duplicated.
  60. *             Duplicated lines are retained in the Nul file for
  61. *             viewing.  @8 is limited to the size of your UnKill
  62. *             Buffer, or a maximium of 300 duplicated lines.
  63.  
  64. *     @f8 -   Retains only all non-empty non-duplicated lines in the
  65. *             current file and removes all lines that are duplicated.
  66. *             Duplicated lines are retained in the Nul file for
  67. *             viewing. The scratch buffer technique is used here, so
  68. *             the number of duplicated lines that can be removed and
  69. *             viewed in the Nul file is practically unlimited.
  70.  
  71. * The following two macros leave all lines in the file but mark all
  72. * duplicated and non-duplicated lines:
  73.  
  74. *     @9  -   Marks all non-empty duplicated lines in the current file
  75. *             with '*▐' in column 77 and leaves lines that are not
  76. *             duplicated in the file unmarked.
  77.  
  78. *     @0  -   Marks all non-empty non-duplicated lines in the current
  79. *             file with '*▐' in column 77 and leaves lines that are
  80. *             duplicated in the file unmarked.
  81.  
  82.  
  83. * A FEW NOTES
  84. * ------------
  85. *           - QEdit v2.15 is required.
  86. *           - Qconfig unkill buffer should be set to 300.
  87. *           - Ascii #173 cannot exist in file macro is invoked in.
  88. *           - Macros are irrespective of all toggles/Qconfig settings.
  89. *           - Macros @5 and @8 are limited to 300 duplicate(d) lines.
  90. *           - Macros @9 and @0 may overwrite text in columns 77-78.
  91.  
  92.  
  93. *                            M A C R O S
  94. * ----------------------------------------------------------------------
  95. * @(5) Remove All Duplicate Lines From File,
  96. *      Uses UnKill, Limmited to 300 Duplicated Lines
  97. * ----------------------------------------------------------------------
  98. * This macro removes all non-empty duplicate lines from the current
  99. * file being edited, leaving only the first line of any duplicate
  100. * lines.  All removed duplicate lines are shown as a block in the Nul
  101. * file.  Press <enter> to return to file with duplicate lines removed.
  102. * The Nul file containing the removed duplicate lines remains loaded
  103. * for viewing.
  104.  
  105.  
  106. * NOTE:  The number of duplicate lines that can be removed with this
  107. * macro is unlimited.  However the number of deleted lines that can be
  108. * viewed in the Nul file cannot exceed 300 because we are limited to
  109. * the size of the unkill buffer set with Qconfig.  If the number of
  110. * deleted lines exceeds the size of the Qconfig unkill buffer setting,
  111. * only the last deleted lines equal to the size of the unkill buffer
  112. * will be shown in the Nul file.
  113.  
  114. @5 macrobegin
  115.         begfile
  116.         setscreenoff setsoundoff
  117.         setwordwrapmode togglewordwrap
  118. * ----------- Clear Unkill Buffer, Insure Nul Not In Ring -----------*
  119.         markcolumn editfile "nul" return
  120.     CLEAR:
  121.         unkill jtrue CLEAR
  122.         quit gotoblockbeg
  123. * ---------------------- Bypass All Empty Lines ----------------------*
  124.     LOOP:
  125.         endline begline jtrue NOT_EMPTY
  126.         cursordown jtrue LOOP
  127.     NOT_EMPTY:
  128. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  129.         unmarkblock makectrofscreen
  130.         begline markcolumn endline
  131.         cursorleft markcolumn
  132.         copy
  133.         cursorright #173
  134. * -------------------- Find/Delete Duplicate Lines -------------------*
  135.     FIND_DUPS:
  136.         find
  137.         paste return delline return
  138.         jfalse NO_DUPS              * Del markers when no more dup's
  139.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  140.         pasteover gotoblockend      * Paste block over line with 'find'
  141.         endline jtrue FIND_DUPS     * Test if dup line
  142.         delline                     * If false, it's a dup, delete it
  143.         cursorup                    * In case next line is dup also
  144.         jump FIND_DUPS              * Continue 'til no more dup's
  145. * --------------------- Delete Position Marker   ---------------------*
  146.     NO_DUPS:
  147.         endline                     * Pos for find                         *|
  148.         find #173 return "b" return
  149.         jfalse REMOVED
  150.         delch                       * Remove pos marker
  151.         jump NO_DUPS
  152.     REMOVED:
  153.         cursordown jtrue LOOP       * MOVE down to next line and loop
  154. * -------------- Add Line At EOF If Last Line Not Empty --------------*
  155.         endline begline jfalse EMPTY
  156.         addline
  157.     EMPTY:
  158. * -------------- Cut Duplicate Lines In Block From EOF --------------*
  159.         unmarkblock
  160.         unkill jtrue HASDUPS
  161.         "No Dup's"
  162.     HASDUPS:
  163.         markline
  164.     UNDELETE:
  165.         unkill jtrue UNDELETE
  166.         endfile cut begfile
  167. * ------------- Paste Duplicate Lines To Nul For Viewing -------------*
  168.         editfile return
  169.         paste
  170. * ----------------- Remove All Empty Lines From Nul -----------------*
  171.     CHK4BLANK: endline begline Jtrue NOTBLANK delline Jtrue CHK4BLANK
  172.     NOTBLANK:  endpara cursordown Jtrue CHK4BLANK
  173. * ------------- Position To View Duplicate Lines Deleted -------------*
  174.         makebotofscreen cursorup
  175.         setscreenon
  176.         pause               * Press <enter> to return to file w/o dup's
  177.         prevfile unmarkblock
  178.         togglewordwrap
  179. *
  180. * 144 bytes Wed  05-27-1992  11:35:18 (TH @5, to ALL #3/854-56)
  181. * 145 bytes Wed  05-27-1992  19:15:35 (TH @5, added endline *|)
  182.  
  183. * 
  184. * ----------------------------------------------------------------------
  185. * @(7) Retain Only All Non-Duplicated Lines In File
  186. *      And Remove All Duplicated Lines
  187. * ----------------------------------------------------------------------
  188. * Retains only all non-empty non-duplicated lines in the current file
  189. * and remove all lines that are duplicated.  Duplicated lines are NOT
  190. * retained in the Nul file for viewing.
  191.  
  192. @7 macrobegin
  193.         begfile
  194.         setscreenoff setsoundoff
  195.         setwordwrapmode togglewordwrap
  196. * ---------------------- Bypass All Empty Lines ----------------------*
  197.     LOOP:
  198.         endline begline jtrue NOT_EMPTY
  199.         cursordown jtrue LOOP
  200.     NOT_EMPTY:
  201. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  202.         unmarkblock makectrofscreen
  203.         begline markcolumn endline
  204.         cursorleft markcolumn
  205.         copy
  206.         cursorright #173
  207. * -------------------- Find/Delete Duplicate Lines -------------------*
  208.     FIND_DUPS:
  209.         find paste return           * Search for first duplicate line
  210.         delline return
  211.         jfalse NO_DUPS              * Del markers when no more dup's
  212.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  213.         pasteover gotoblockend      * Paste block over line with 'find'
  214.         endline jtrue FIND_DUPS     * Test true if no dup line
  215.         delline                     * If false, it's a dup, delete it
  216.         cursorup                    * In case next line is dup also
  217.     HAS_DUPS:
  218.         endline                     * Pos for find                         *|
  219.         find #173 return "b" return
  220.         jfalse REMOVE_DUP
  221.         delch                       * Remove pos marker
  222.         jump HAS_DUPS
  223.     REMOVE_DUP:
  224.         delline                     * Line had at least 1 dup, del it
  225.         cursorup                    * In case next line is dup also
  226.         jump LOOP
  227.     NO_DUPS:
  228.         endline                     * Pos for find                         *|
  229.         find #173 return "b" return
  230.         jfalse REMOVED
  231.         delch                       * Remove pos marker
  232.         jump NO_DUPS
  233.     REMOVED:
  234.         cursordown jtrue LOOP
  235.         begfile togglewordwrap
  236. *
  237. * 88 bytes Wed  05-27-1992  11:35:26 (TH @7, to ALL #3/854-56)
  238. * 90 bytes Wed  05-27-1992  19:15:44 (TH @7, added endline *|)
  239.  
  240. * 
  241. * ----------------------------------------------------------------------
  242. * @(8) Retain Only All Non-Duplicated Lines In File
  243. *      And Remove All Duplicated Lines,
  244. *      Duplicated Lines Retained In Nul File,
  245. *      Uses UnKill, Limmited to 300 Duplicated Lines
  246. * ----------------------------------------------------------------------
  247. * This macro retains only all non-empty non-duplicated lines in the
  248. * current file and removes all lines that are duplicated.  Duplicated
  249. * lines are retained in the Nul file for viewing.  @8 uses the UnKill
  250. * buffer.  Refer to @5 NOTE for 300 line limitation.
  251.  
  252. @8 macrobegin
  253.         begfile
  254.         setscreenoff setsoundoff
  255.         setwordwrapmode togglewordwrap
  256. * ----------- Clear Unkill Buffer, Insure Nul Not In Ring -----------*
  257.         markcolumn editfile "nul" return
  258.     CLEAR:
  259.         unkill jtrue CLEAR
  260.         quit gotoblockbeg
  261. * ---------------------- Bypass All Empty Lines ----------------------*
  262.     LOOP:
  263.         endline begline jtrue NOT_EMPTY
  264.         cursordown jtrue LOOP
  265.     NOT_EMPTY:
  266. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  267.         unmarkblock makectrofscreen
  268.         begline markcolumn endline
  269.         cursorleft markcolumn
  270.         copy
  271.         cursorright #173
  272. * -------------------- Find/Delete Duplicate Lines -------------------*
  273.     FIND_DUPS:
  274.         find paste return           * Search for first duplicate line
  275.         delline return
  276.         jfalse NO_DUPS              * Del markers when no more dup's
  277.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  278.         pasteover gotoblockend      * Paste block over line with 'find'
  279.         endline jtrue FIND_DUPS     * Test true if no dup line
  280.         delline                     * If false, it's a dup, delete it
  281.         cursorup                    * In case next line is dup also
  282.     HAS_DUPS:
  283.         endline                     * Pos for find                         *|
  284.         find #173 return "b" return
  285.         jfalse REMOVE_DUP
  286.         delch                       * Remove pos marker
  287.         jump HAS_DUPS
  288.     REMOVE_DUP:
  289.         delline                     * Line had at least 1 dup, del it
  290.         cursorup                    * In case next line is dup also
  291.         jump LOOP
  292.     NO_DUPS:
  293.         endline                     * Pos for find                         *|
  294.         find #173 return "b" return
  295.         jfalse REMOVED
  296.         delch                       * Remove pos marker
  297.         jump NO_DUPS
  298.     REMOVED:
  299.         cursordown jtrue LOOP       * MOVE down to next line and loop
  300. * -------------- Add Line At EOF If Last Line Not Empty --------------*
  301.         endline begline jfalse EMPTY
  302.         addline
  303.     EMPTY:
  304. * -------------- Cut Duplicate Lines In Block From EOF --------------*
  305.         unmarkblock
  306.         unkill jtrue HASDUPS
  307.         "No Dup's"
  308.     HASDUPS:
  309.         markline
  310.     UNDELETE:
  311.         unkill jtrue UNDELETE
  312.         endfile cut begfile
  313. * ------------- Paste Duplicate Lines To Nul For Viewing -------------*
  314.         editfile return
  315.         paste
  316. * ----------------- Remove All Empty Lines From Nul -----------------*
  317.     CHK4BLANK: endline begline Jtrue NOTBLANK delline Jtrue CHK4BLANK
  318.     NOTBLANK:  endpara cursordown Jtrue CHK4BLANK
  319. * ------------- Position To View Duplicate Lines Deleted -------------*
  320.         makebotofscreen cursorup
  321.         setscreenon
  322.         pause               * Press <enter> to return to file w/non-dup's
  323.         prevfile unmarkblock
  324.         togglewordwrap
  325. *
  326. * 160 bytes Wed  05-27-1992  14:52:07 (TH @8, to ALL #3/854-56)
  327. * 162 bytes Wed  05-27-1992  19:15:48 (TH @8, added endline *|)
  328.  
  329. * 
  330. * ----------------------------------------------------------------------
  331. * @(9) Mark Duplicated Lines In File
  332. * ----------------------------------------------------------------------
  333. * This macro marks all non-empty duplicated lines in the current file
  334. * with '*▐' in column 77 and leaves lines that are not duplicated in the
  335. * file unmarked.  Since the macro sets Insert Off, any duplicated
  336. * lines having text in columns 77 and 78 will be overwritten.  This
  337. * macro operates in reverse of @0.
  338.  
  339. @9 macrobegin
  340.         begfile
  341.         setscreenoff setsoundoff
  342.         setwordwrapmode togglewordwrap
  343.         setinsmode toggleinsert
  344. * ---------------------- Bypass All Empty Lines ----------------------*
  345.     LOOP:
  346.         endline begline jtrue NOT_EMPTY
  347.         cursordown jtrue LOOP
  348.     NOT_EMPTY:
  349. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  350.         unmarkblock makectrofscreen
  351.         begline markcolumn endline
  352.         cursorleft markcolumn
  353.         copy
  354.         cursorright #173            * Insert starting pos marker
  355. * --------------------- Find/Mark Duplicate Lines --------------------*
  356.     FIND_DUPS:
  357.         find paste return           * Search for next duplicate line
  358.         delline return
  359.         jfalse NO_DUPS              * Del markers when no more dup's
  360.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  361.         pasteover gotoblockend      * Paste block over line with 'find'
  362.         endline jtrue FIND_DUPS     * Test true if no dup line
  363.         gotocolumn "77" return "*▐"
  364.     HAS_DUPS:
  365.         endline                     * Pos for find                         *|
  366.         find #173 return "b" return
  367.         jfalse MARK_DUP
  368.         delch                       * Remove pos marker
  369.         jump HAS_DUPS
  370.     MARK_DUP:
  371.         gotocolumn return "*▐"
  372.         jump REMOVED                * MOVE down to next line and loop
  373.     NO_DUPS:
  374.         find #173 return "b" return
  375.         jfalse REMOVED
  376.         delch                       * Remove pos marker
  377.         jump NO_DUPS
  378.     REMOVED:
  379.         cursordown jtrue LOOP       * MOVE down to next line and loop
  380.     EOF:
  381.         begfile
  382.         togglewordwrap toggleinsert
  383. *
  384. * 103 bytes Wed  05-27-1992  11:35:35 (TH @9, to ALL #3/854-56)
  385. * 104 bytes Wed  05-27-1992  19:15:53 (TH @9, added endline *|)
  386.  
  387. * 
  388. * ----------------------------------------------------------------------
  389. * @(0) Mark Non-Duplicated Lines In File
  390. * ----------------------------------------------------------------------
  391. * This macro marks all non-empty non-duplicated lines in the current
  392. * file with '*▐' in column 77 and leaves lines that are duplicated in
  393. * the file unmarked.  Since the macro sets Insert Off, any
  394. * non-duplicated lines having text in columns 77 and 78 will be
  395. * overwritten.  This macro operates in reverse of @9.
  396.  
  397. @0 macrobegin
  398.         begfile
  399.         setscreenoff setsoundoff
  400.         setwordwrapmode togglewordwrap
  401.         setinsmode toggleinsert
  402. * ---------------------- Bypass All Empty Lines ----------------------*
  403.     LOOP:
  404.         endline begline jtrue NOT_EMPTY
  405.         cursordown jtrue LOOP
  406.     NOT_EMPTY:
  407. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  408.         unmarkblock makectrofscreen
  409.         begline markcolumn endline
  410.         cursorleft markcolumn
  411.         copy
  412.         cursorright #173            * Insert starting pos marker
  413. * --------------------- Find/Mark Duplicate Lines --------------------*
  414.     FIND_DUPS:
  415.         find paste return           * Search for first duplicate line
  416.         delline return
  417.         jfalse NO_DUPS              * Del markers when no more dup's
  418.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  419.         pasteover gotoblockend      * Paste block over line with 'find'
  420.         endline jtrue FIND_DUPS     * Test true if no dup line
  421.         gotocolumn "77" return "*▐"
  422.     HAS_DUPS:
  423.         endline                     * Pos for find                         *|
  424.         find #173 return "b" return
  425.         jfalse MARK_DUP
  426.         delch                       * Remove pos marker
  427.         jump HAS_DUPS
  428.     MARK_DUP:
  429.         gotocolumn return "*▐"
  430.         jump REMOVED                * MOVE down to next line and loop
  431.     NO_DUPS:
  432.         endline                     * Pos for find                         *|
  433.         find #173 return "b" return
  434.         jfalse REMOVED
  435.         delch                       * Remove pos marker
  436.         jump NO_DUPS
  437.     REMOVED:
  438.         cursordown jtrue LOOP       * MOVE down to next line and loop
  439.     EOF:
  440.         begfile
  441. * -------- Mark Non-Duplicated Lines, Unmark Duplicated Lines --------*
  442.     UNDO:
  443.         markline
  444.         gotocolumn "77" return
  445.         cursorleft                  * Pos for find
  446.         find "*▐" return
  447.         "L" return jfalse MARK
  448.         delch delch                 * Delete all markers
  449.         jump DOWN
  450.     MARK:
  451.         cursorright "*▐"            * Line is non-dup, mark it
  452.     DOWN:
  453.         cursordown jtrue UNDO       * Loop 'til done
  454.         begfile unmarkblock
  455.         togglewordwrap toggleinsert
  456. *
  457. * 139 bytes Wed  05-27-1992  12:01:15 (TH @0, to ALL #3/854-56)
  458. * 141 bytes Wed  05-27-1992  19:15:57 (TH @0, added endline *|)
  459.  
  460. * 
  461. * ----------------------------------------------------------------------
  462. * @(f8) Retain Only All Non-Duplicated Lines In File
  463. *       And Remove All Duplicated Lines,
  464. *       Duplicated Lines Retained In Nul File,
  465. *       Uses Scratch Buffers Instead of UnKill In @8
  466. * ----------------------------------------------------------------------
  467. * This macro retains only all non-empty non-duplicated lines in the
  468. * current file and removes all lines that are duplicated.  Duplicated
  469. * lines are retained in the Nul file for viewing.  The scratch buffer
  470. * technique is used here, so the number of duplicated lines that can be
  471. * removed and viewed in the Nul file is practically unlimited.
  472.  
  473. @f8 macrobegin
  474.         begfile
  475.         setscreenoff setsoundoff
  476.         setwordwrapmode togglewordwrap
  477. * ------------ Clear Scrap Buffer, Insure Nul Not In Ring ------------*
  478.         endline markcolumn          * Make empty block
  479.         storescrbuff "d" return     * Clear buff "d"
  480.         editfile "nul" return quit  * Quit Nul for ring pos
  481.         gotoblockbeg                * Return to file to remove dup's
  482. * ---------------------- Bypass All Empty Lines ----------------------*
  483.     LOOP:
  484.         endline begline jtrue NOT_EMPTY
  485.         cursordown jtrue LOOP
  486.     NOT_EMPTY:
  487. * ------- Copy Line To Scrap For Find, Insert Position Marker -------*
  488.         unmarkblock makectrofscreen
  489.         begline markcolumn endline
  490.         cursorleft markcolumn
  491.         copy
  492.         cursorright #173
  493. * -------------------- Find/Delete Duplicate Lines -------------------*
  494.     FIND_DUPS:
  495.         find paste return           * Search for first duplicate line
  496.         delline return
  497.         jfalse NO_DUPS              * Del markers when no more dup's
  498.         isbegline jfalse FIND_DUPS  * Bypass multiple dup's in same line
  499.         pasteover gotoblockend      * Paste block over line with 'find'
  500.         endline jtrue FIND_DUPS     * Test true if no dup line
  501.         appendscrbuff "d" return    * If false, it's a dup, append to buff
  502.         delline                     * If false, it's a dup, delete it
  503.         cursorup                    * In case next line is dup also
  504.     HAS_DUPS:
  505.         endline                     * Pos for find
  506.         find #173 return "b" return
  507.         jfalse REMOVE_DUP
  508.         delch                       * Remove pos marker
  509.         jump HAS_DUPS
  510.     REMOVE_DUP:
  511.         markline                                                           *|
  512.         appendscrbuff "d" return                                           *|
  513.         delline                     * Line had at least 1 dup, delete it
  514.         cursorup                    * In case next line is dup also
  515.         jump LOOP
  516.     NO_DUPS:
  517.         endline                     * Pos for find
  518.         find #173 return "b" return
  519.         jfalse REMOVED
  520.         delch                       * Remove pos marker
  521.         jump NO_DUPS
  522.     REMOVED:
  523.         cursordown jtrue LOOP       * MOVE down to next line and loop
  524.         begfile
  525. * ------------- Get Duplicated Lines To Nul For Viewing -------------*
  526.         editfile return
  527.         getscrbuff "d" return
  528. * ----------------- Remove All Empty Lines From Nul -----------------*
  529.     CHK4BLANK: endline begline Jtrue NOTBLANK delline Jtrue CHK4BLANK
  530.     NOTBLANK:  endpara cursordown Jtrue CHK4BLANK
  531. * ------------- Position To View Duplicate Lines Deleted -------------*
  532.         makebotofscreen cursorup
  533.         setscreenon
  534.         pause               * Press <enter> to return to file w/o dup's
  535.         prevfile unmarkblock
  536.         togglewordwrap
  537. *
  538. * 162 bytes Wed  05-27-1992  19:15:48 (TH @8,  uses UnKill)
  539. * 136 bytes Wed  05-27-1992  19:40:42 (TH @f8, uses scratch buffers)
  540. * 141 bytes Wed  05-27-1992  20:24:18 (TH @f8, added appendscrbuff *|)
  541.  
  542.  
  543.